The present disclosure relates to efficient resource utilization in a data center network through adaptive data flow scheduling. More particularly, the present disclosure relates to assigning a network path to a data packet flow based upon link utilization weightings of the data center network.
A software-defined data center (SDDC) is an architectural approach to virtualizing a data center infrastructure and delivering the infrastructure as a service. This approach is in contrast to traditional data centers where the infrastructure is typically defined by hardware and devices. A software-defined data center encompasses a variety of concepts and data center infrastructure components, and each component may be provisioned, operated, and managed through an application programming interface (API). The core architectural components of a software-defined data center include compute virtualization, storage virtualization, management and automation software, and network and security virtualization.
Compute virtualization is a software implementation of a computer. Storage virtualization (e.g., software defined storage) enables data center administrators to manage multiple storage types and brands from a single software interface. Management and automation software enables an administrator to provision, control, and manage all software-defined data center components. And, network and security virtualization is the process of merging hardware and software resources and networking functionality into a software-based virtual network.
Like traditional data centers, a software-defined data center groups data packet transmissions from a source entity to a destination entity in “flows,” which are represented by a “flow identifier” included in the data packets. For example, the flow identifier may be a 5-tuple that includes a source/destination IP address, source/destination port number, and a protocol identifier.
A software-defined data center may generate dynamic variations in network traffic, which can cause high utilization at some links (e.g., connection between two switches or routers) while leaving other links in the network underutilized. As such, the network may experience network bottlenecks (congestion) even when the network capacity is sufficient to accommodate the existing flows between network entities.